Flash memory devices are widely used as audio and image data storage media of information devices such as, for example, computers, smartphones, personal digital assistants (PDAs), digital cameras, camcorders, voice recorders, MP3 players, and handheld personal computers (PCs). However, an erase operation needs to be performed in advance to write data into flash memory, and a unit of written data is often greater than that of erased data. This prevents a file system for a typical hard disk from being used when flash memory is used as an auxiliary memory. In addition, this implies that sequential input/output processing to flash memory is more effective than non-sequential input/output processing.
A representative example of a high-capacity storage device based on flash memory is a solid state drive (hereinafter referred to as “SSD”). With increasing demand for SSDs, the manner and/or purpose for which SSDs are used have become varied. For example, SSDs may be implemented for use by a server, for use by a client, for use by a data center, and the like. An SSD interface should provide optimum speed and reliability according to the purpose for which the SSD is implemented. To meet this demand, Serial Advanced Technology Attachment (SATA), Peripheral Component Interconnect express (PCIe), and Serial Attached SCSI (SAS) interfaces, or the like, are typically used as optimal SSD interfaces.
A storage system including a plurality of storage devices is used for high reliability. For example, a RAID storage system partitions one data and distributes and stores partitioned “sub-stripes (data chunks)” in the storage devices. If one of the storage devices fails, the data that is stored in the failed storage device can be recovered using parity bits stored in the other storage devices that were generated from the data stored in the failed storage device. Because there is almost no case where all of the storage devices become problematic at the same time, the storage system guarantees high reliability of data.
Flash memory devices use error correction codes (ECCs) to correct read errors when data is read from flash memory. In some cases, a read error cannot be corrected by performing ECC recovery operations. It is known to use RAID storage techniques in flash memory devices to enable read errors to be corrected that were not able to be corrected by performing ECC recovery operations. Typically, an ECC recovery operation comprises many steps performed on a page where the read error occurred. If the read error was unable to be corrected by performing these steps, RAID recovery is performed, which involves reading pages belonging to the corresponding RAID stripe and using the read information, which includes parity, to correct the read error. Because RAID recovery is performed after ECC recovery has been unsuccessfully performed, performing RAID recovery necessarily increases maximum error correction times.
A need exists for a method and apparatus for performing RAID recovery that reduces the amount of time that is required to perform read error correction.